#===istalismanplugin===
# -*- coding: utf-8 -*-

# $Revision: 52 $
# $Author: rchiganov@gmail.com $
# $Date: 2013-07-29 04:17:07 +0000 (Mon, 29 Jul 2013) $

#---------------------------------------------------------------------------------------------------

def botchat_write_botbase ( praw, ptype, psource, pparameters ):
	if not GROUPCHATS.has_key(psource[1]):
		return

	if ptype == 'private':
		return

	# Проверяем уровень доступа пользователя, которому разрешено писать в базу
	if user_level(psource, psource[1]) <= 11:
		return

	lparam = pparameters.split()
	if len(lparam) < 2:
		return

	# Проверяем сообщение, а не команда ли это была
	if ( lparam[1] in COMMANDS.keys() ) or ( lparam[1] in MACROS.gmacrolist.keys() ) :
		return
	if MACROS.macrolist.has_key(psource[1]):
		if lparam[1] in MACROS.macrolist.keys() :
			return

	if ptype == 'public':
		if lparam[0][:-1] == get_bot_nick(psource[1]).decode('utf-8'):
			BOTLOG = 'dynamic/' + psource[1] + '/botbase.txt'
			vika_check_file(BOTLOG, '[]')

			ltxt = eval(read_file(BOTLOG))
			if pparameters[len(lparam[0]):].strip() in ltxt:
				return
			ltxt.append(pparameters[len(lparam[0]):].strip())
			write_file(BOTLOG, str(ltxt))

#---------------------------------------------------------------------------------------------------

def botchat_answ_botbase ( praw, ptype, psource, pparameters ):
	if not GROUPCHATS.has_key(psource[1]):
		return

	if ptype == 'private':
		return

	if psource[2] == get_bot_nick(psource[1]).decode('utf-8'):
		return

	lparam = pparameters.split()

	if len(lparam) != 0 and GCHCFGS.has_key(psource[1]):
		if GCHCFGS[psource[1]].has_key('boltun'):
			if GCHCFGS[psource[1]]['boltun'] == True:
				if GROUPCHATS.has_key(psource[1]):
					# Проверяем сообщение, а не команда ли это была
					if ( lparam[0] in COMMANDS.keys() ) or ( lparam[0] in MACROS.gmacrolist.keys() ) or ( lparam[0] == u'/me' ) :
						return
					if MACROS.macrolist.has_key(psource[1]):
						if lparam[0] in MACROS.macrolist[psource[1]].keys():
							return

					if not lparam[0][:-1] in GROUPCHATS[psource[1]].keys():
						BOTLOG = 'dynamic/' + psource[1] + '/botbase.txt'
						vika_check_file(BOTLOG, '[]')
						ltxt = eval(read_file(BOTLOG))
						if len(ltxt) > 0:
							reply(ptype, psource, random.choice(ltxt))
						return

	if len(lparam) < 2:
		return

	# Проверяем сообщение, а не команда ли это была
	if ( lparam[1] in COMMANDS.keys() ) or ( lparam[1] in MACROS.gmacrolist.keys() ) :
		return
	if MACROS.macrolist.has_key(psource[1]):
		if lparam[1] in MACROS.macrolist[psource[1]].keys():
			return

	if ptype == 'public' and psource[2] != get_bot_nick(psource[1]).decode('utf-8'):
		if lparam[0][:-1] == get_bot_nick(psource[1]).decode('utf-8'):
			BOTLOG = 'dynamic/' + psource[1] + '/botbase.txt'
			vika_check_file(BOTLOG, '[]')
			ltxt = eval(read_file(BOTLOG))
			if len(ltxt) > 0:
				reply(ptype, psource, random.choice(ltxt))

#---------------------------------------------------------------------------------------------------

# Выводим список фраз из базы болталки
def botchat_list ( ptype, psource, pparameters ):
	if not GROUPCHATS.has_key(psource[1]):
		return

	lanswer = u'\nСписок фраз базы бота для болталки:\n'

	BOTLOG = 'dynamic/' + psource[1] + '/botbase.txt'
	vika_check_file(BOTLOG, '[]')

	ltxt = eval(read_file(BOTLOG))
	for li in range(len(ltxt)):
		lanswer += u'{:<10}'.format(str(li).decode('utf-8')) + ltxt[li] + u'\n'

	if ptype == 'public':
		reply(ptype, psource, 'в привате')
	reply('private', psource, lanswer)

#---------------------------------------------------------------------------------------------------

# Удаляем фразу из базы
def botchat_del ( ptype, psource, pparameters ):
	if not GROUPCHATS.has_key(psource[1]):
		return

	lparam = pparameters.split()

	if len(lparam) > 1:
		reply(ptype, psource, 'йа нипоняла... *SCRATCH*')
		return

	try:
		lindex = int(lparam[0])
	except ValueError:
		reply(ptype, psource, 'йа нипоняла... *SCRATCH*')
		return

	BOTLOG = 'dynamic/' + psource[1] + '/botbase.txt'
	vika_check_file(BOTLOG, '[]')

	ltxt = eval(read_file(BOTLOG))
	ltxt.pop(lindex)
	write_file(BOTLOG, str(ltxt))

	reply(ptype, psource, 'уфффф, удалила...')

#---------------------------------------------------------------------------------------------------

# Включаем\выключаем общую болталку
def botchat_boltun ( ptype, psource, pparameters ):
	if not GROUPCHATS.has_key(psource[1]):
		return

	lparam = pparameters.split()
	if len(lparam) > 1:
		reply(ptype, psource, 'что то ты не то пишешь... пиши правильно *PUNISH*')
		return

	lboltun = False
	if len(lparam) == 0:
		if GCHCFGS.has_key(psource[1]):
			if GCHCFGS[psource[1]].has_key('boltun'):
				lboltun = GCHCFGS[psource[1]]['boltun']
		if lboltun:
			reply(ptype, psource, 'болталка включена')
		else:
			reply(ptype, psource, 'болталка выключена')
		return

	if lparam[0] == u'вкл':
		if not GCHCFGS.has_key(psource[1]):
			GCHCFGS[psource[1]] = {}
		GCHCFGS[psource[1]]['boltun'] = True
		write_file('dynamic/' + psource[1] + '/config.cfg', str(GCHCFGS[psource[1]]))
		reply(ptype, psource, 'включила... *DANCE*')
	elif lparam[0] == u'выкл':
		if not GCHCFGS.has_key(psource[1]):
			GCHCFGS[psource[1]] = {}
		GCHCFGS[psource[1]]['boltun'] = False
		write_file('dynamic/' + psource[1] + '/config.cfg', str(GCHCFGS[psource[1]]))
		reply(ptype, psource, 'выключила... :-\\')
	else:
		reply(ptype, psource, 'что то ты не то пишешь... пиши правильно *PUNISH*')

#---------------------------------------------------------------------------------------------------

register_message_handler(botchat_write_botbase)
register_message_handler(botchat_answ_botbase)

register_command_handler(botchat_boltun, 'болтун', ['фан', 'все'], 30, 'Включаем\выключаем болталку для сообщений, которые не отнсятся к определённому пользователю. Если команда вызывается без параметров, то выводится текущий статус болталки.', 'болтун [вкл\выкл]', ['болтун', 'болтун вкл', 'болтун выкл'])
register_command_handler(botchat_list, 'болтун*', ['фан', 'все'], 20, 'Выводим базу болталки в виде списка для просмотра', 'болтун*', ['болтун*'])
register_command_handler(botchat_del, 'болтун-', ['фан', 'все'], 20, 'Удаляем фразу по её индексу из базы', 'болтун- [индекс]', ['болтун- 2'])

#---------------------------------------------------------------------------------------------------
